package com.codefish.framework.spring.context.event;

import com.codefish.framework.spring.context.ApplicationEvent;

/**
 * 事件发布广播接口
 *
 * @author <a href='https://gitee.com/hzf2281'>codefish</a>
 * @version 1.0.0
 * @since 2022/10/10 下午 03:19
 */
public interface IApplicationEventMulticaster {
    /**
     * 注册监听者
     *
     * @param applicationListener 新的监听者
     */
    void addApplicationListener(IApplicationListener<?> applicationListener);

    /**
     * 移除监听者
     *
     * @param applicationListener 某个待移除的监听者
     */
    void removeApplicationListener(IApplicationListener<?> applicationListener);

    /**
     * 向监听者广播事件
     *
     * @param applicationEvent 待广播的事件实体
     */
    void multicastEvent(ApplicationEvent applicationEvent);

}
